import bisect
s=input().strip()
heavy=[]
metal=[]
i=0
while(i<len(s)-4):
if(s[i:i+5]=='heavy'):
heavy.append(i)
elif(s[i:i+5]=='metal'):
metal.append(i)
i+=1
count=0
i=0
j=0
while(j<len(metal) and i<len(heavy)):
if(heavy[i]<metal[j] and metal[j]-heavy[i]>=5):
count+=(len(metal)-j)
i+=1
elif(metal[j]<heavy[i]):
j+=1
print(count)
#include <bits/stdc++.h>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
string s;
cin >> s;
long long heavy(0), amount(0);
for (int i = 0; i < min(s.length() - 4, s.length()); i++)
{
if (s.substr(i, 5) == "heavy")
{
heavy++;
}
else if (s.substr(i, 5) == "metal")
{
amount += heavy;
}
}
cout << amount << endl;
return 0;
}
379B - New Year Present | 1498A - GCD Sum |
1277C - As Simple as One and Two | 1301A - Three Strings |
460A - Vasya and Socks | 1624C - Division by Two and Permutation |
1288A - Deadline | 1617A - Forbidden Subsequence |
914A - Perfect Squares | 873D - Merge Sort |
1251A - Broken Keyboard | 463B - Caisa and Pylons |
584A - Olesya and Rodion | 799A - Carrot Cakes |
1569B - Chess Tournament | 1047B - Cover Points |
1381B - Unmerge | 1256A - Payment Without Change |
908B - New Year and Buggy Bot | 979A - Pizza Pizza Pizza |
731A - Night at the Museum | 742A - Arpa’s hard exam and Mehrdad’s naive cheat |
1492A - Three swimmers | 1360E - Polygon |
1517D - Explorer Space | 1230B - Ania and Minimizing |
1201A - Important Exam | 676A - Nicholas and Permutation |
431A - Black Square | 474B - Worms |